home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gekikoh Dennoh Club 2
/
Gekikoh Dennoh Club Vol. 2 (Japan).7z
/
Gekikoh Dennoh Club Vol. 2 (Japan) (Track 01).bin
/
tools
/
psmed
/
psmed01.lzh
/
psmed.doc
< prev
next >
Wrap
Text File
|
1997-09-04
|
11KB
|
324 lines
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃X680x0 Human68k ┃
┃ PSM汎用編集ツール PSMED Ver0.1 ┃
┃ by BLACK. ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
┌───────┐
│このツールは?│
└───────┘
PSMファイルでエディタを作る時に有る程度簡単に作成するために
作られた汎用PSMエディタです。
PSMファイルとはPSMEMで作られるPSメモリーカードデータファイルです。
PSMEMや拙作SXPSMEMなどを持ってない人は無用の長物になってしまいます。
ただし、他のPSメモリーカードツールには数種類有り、
それらのデータファイル相互コンバータも存在するようです。
SX-WINDOWのコンソールウィンドウでも動作可能にするために
画面構成、入力はコンソールとDOSコールを用いて作られています。
┌───┐
│使い方│
└───┘
コマンドに編集情報ファイルとPSMファイルを渡します。
psmed [option] <*.ped> <*.psm>
となっています。
オプションには
-b バックアップファイルを作成しない。(編集情報に指定がない場合も有効)
-v ビューモード。書き込み禁止。
が有ります。
編集情報ファイルの方は拡張子が省略出来ます。
また、そのパスで見つからなかった場合、
実行ファイルが格納されているパスも探しに行きます。
┌────┐
│画面操作│
└────┘
エディタ画面は以下のキー操作で使えます。
ROLL UP 次ページへ
ROLL DOWN 前ページへ
↑ カーソルを上げます。
↓ カーソルを下げます。
RET 項目データの入力(または選択)に移ります。
ESC PSMEDを終了します。
V 書き込み禁止にする。
項目データ入力時は何も入れないでリターンすると内容を更新しません。
History.xに対応しているので使い易くなっていると思います。
PSMED実行中はCLRキーの定義をVOIDに変えていますので
入力内容消去にCLRキーが使えます。
ただし、History.x登録時のVOIDになっているESC・Eを登録するので
History.xが組み込まれて無い時は無効かもしれません。
書き込み禁止化はその時点で禁止するので変更後に禁止しても
項目値は現状維持のままになります。
さらにファイル出力も行われないため同時に今までの変更も
ファイルに対して無効になります。
メニューで選択時も同様な操作になります。
ROLL UP 次ページへ
ROLL DOWN 前ページへ
↑ カーソルを上げます。
↓ カーソルを下げます。
RET 決定
ESC 選択中断
┌──────────┐
│編集情報定義ファイル│
└──────────┘
詳しくは付属のサンプルが参考になると思います。
拡張子はPEDと決まっています。
普通のテキストファイルですのでエディタで作成出来ます。
1コマンド1行で構成され、コマンドに対して幾つかのオプションが付く格好になります。
先頭行には以下の認識IDが必要ですので忘れない様にして下さい。
*** PSMED Edit information file Ver.1 ***
コメントは先頭文字が '*','#',';','/'のいずれかでコメント行になります。
空行は無視されます。
コマンドは以下の通りです。(コマンドは大文字小文字を同一視します)
id 対象PSMのID
option オプションスイッチ
pagetitle ページのタイトル
title ページ内タイトル
edit.b バイト編集
edit.w ワード編集
edit.l ロングワード編集
edit.s 文字列編集
page 次ページへ
menu メニュー使用設定
menuitem メニュー項目設定
menu.b バイトメニュー編集
menu.w ワードメニュー編集
menu.l ロングワードメニュー編集
checksum.p チェックサム補正プログラムの設定
end 終了
コマンドとオプション間は、" \t\n,:="をキーに区切るので
実はサンプルで使っている表記以上に有る程度柔軟に書けます。
最後の項目名やタイトルは "\n\t"をキーにしています。
例外があるかもしれませんがコマンドの行末でタブに続けて書くと
コメントとして使用出来る場合があります。
コマンドの解釈次第ですが必要以上にコマンドの引数が多いとそれらは無視されます。
メニューを定義することでメニュー選択項目を作る事が可能です。
アイテムなど数値よりも名前の選択にしたい時に有効です。
画面は1ページ25項目となっています。
編集項目(とタイトル)を入れる度に1項目消費し、
ページから外れた分は次ページへと回されていきます。
ページ内にタイトルを入れたり、(titleコマンド)
改ページさせる(pageコマンド)事も出来るようにしています。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
・ID
ID <ID文字列>
編集情報が対応するPSMファイルの指定になります。
必ず指定する必要があります。
このIDはPSMファイル先頭12バイト目から入っている物です。
これはPSが管理する本当のファイル名です。
PSMファイル側とは先頭一致で判定するので同一部分まで書いて下さい。
複数セーブ出来る物はセーブ番号で末端を変えたりしています。
SLPS-1234A セーブ1
SLPS-1234B セーブ2
SLPS-1234C セーブ3
SLPS-1234D セーブ4
この場合は
ID SLPS-1234
としておけば全部判定が通ります。
ただし、これとて完全ではなくゲームのファイル名の付け方によっては
通して欲しくないファイルまで通ることがあるので注意して下さい。
上の場合にさらに、
SLPS-1234X システムデータ
なんてあったりすると形式が違うであろうシステムデータも通ってしまいます。
とりあえず今はゲームの種類を間違えない程度です。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
・OPTION
OPTION <オプション文字列>
この編集情報固有のオプションスイッチです。
コマンドオプションとは違います。
オプションの文字列に文字を並べることによって指定します。
現在は以下の通りです。
a アドレスはPSMファイルのオフセット
b バックアップを作成しない
v 閲覧のみとする
全部指定する時は
option abv
となります。
大文字小文字を区別するので注意して下さい。
該当しない文字は無視されます。
アドレスはPSMファイルとすると、
PSMファイルをダンプした場合のアドレスがそのまま使えます。
指定無しの場合は純粋にブロックデータを順番に個数分並べた場合のアドレスになります。
使っている人にはPSMEDITと同じといえば解り易いと思います。
PSMファイルはその形式上ブロックデータのアドレスが一致しないので
内部にアドレス変換機能を付けてあります。
FESで見る場合が多い人は指定した方が混乱が無いでしょう。
閲覧のみとするとライトプロテクト状態となります。
編集用の情報ではない時に指定するといいでしょう。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
・PAGETITLE
PAGETITLE <タイトル文字列>
そのページのタイトルです。
ページの内容を示します。無指定時には何も出ません。
ページの項目数には影響を与えません。
専用の表示場所を取っています。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
・TITLE
TITLE <タイトル文字列>
ページ内に自由に置ける項目タイトルです。
ページ内で区切りたい時などに使えます。
データ編集コマンド同様1項目消費します。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
・EDIT.B
・EDIT.W
・EDIT.L
EDIT.B <アドレス> <項目名>
EDIT.W <アドレス> <項目名>
EDIT.L <アドレス> <項目名>
データ編集コマンドです。
ページ内容の編集項目の定義に当たります。
.b .w .lの違いはそれぞれバイト、ワード、ロングワードサイズです。
内容表示は10進符号無しになっています。
アドレスはC言語表記が使えます。また、$による16進表記も使えます。
アドレスを指定する時はくれぐれもデータはリトルエンディアン(*1)で
格納されている事を忘れないで下さい。
指定するアドレスは格納開始アドレスですのでバイト順の
一番左側のアドレスになります。
PSのCPUはリトルエンディアンで動作していると思われます。
今のところわざわざひっくり返して格納していたのは見た事はありません。
一応・・・
*1 リトルエンディアン
要するに256とあったら普通はメモリー上に格納されるのは 01 00 ですが、
リトルエンディアンでは 00 01 と収まる事を意味します。
ロングワードでも 16909060 は 01 02 03 04 ではなく 04 03 02 01 となります。
バイト順が鏡に映したように全く正反対になります。
68系のように素直に格納されるのはビッグエンディアンです。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
・EDIT.S
EDIT.S <アドレス>,<サイズ> <項目名>
文字列データ編集コマンドです。
これもページ内容の編集部分の定義に当たります。
サイズは占める容量を指定して下さい。
文字列は0終端で有るという前提が有りますのでその分もサイズに入れて下さい。
容量に満たない文字列の後は0で埋められますが、
入力可能な文字列長はサイズ-1バイトまでです。
今のところ0終端でない文字列は考慮に有りません。
アドレスとサイズはC言語表記が使えます。また、$による16進表記も使えます。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
・PAGE
PAGE
ページ送りコマンドです。
ページの内容をここで打ち止めにする場合に使用します。
通常は1ページ25項目で自動的にページ送りされます。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
・MENU
MENU <メニュー項目数の並び>
一覧で選択するメニューの定義をします。メニューは最大8つまで定義出来ます。
項目数が10個のメニューを2つ用意する場合は、
MENU 10,10
と、なります。
個数が満たない場合は残りは0個として扱います。
このコマンドを使わない限りメニュー関係のコマンドはエラーになります。
一時的な打ち消し用に0個も指定出来るようにはしてあります。
メニューは定義しておきたいが実際の選択は禁止しておきたい場合に使って下さい。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
・MENUITEM
MENUITEM <メニュー番号>,<項目番号> <項目名>
メニューの項目内容を定義します。1回1項目の定義となります。
メニュー番号は1~定義した個数までです。
項目番号は0~項目数-1までです。
メニュー毎にそれぞれ最大項目数分まで使用出来ます。
最後に渡って指定されてない項目番号がある場合はメニュー選択に出てきません。
従って判明している分から登録していく事が可能です。
この項目番号が実際のデータに対応します。
逆に言えばデータ値に名前を付けていく事になります。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
・MENU.B
・MENU.W
・MENU.L
MENU.B <アドレス>,<メニュー番号> <項目名>
MENU.W <アドレス>,<メニュー番号> <項目名>
MENU.L <アドレス>,<メニュー番号> <項目名>
メニューによるデータ編集コマンドです。
.b .w .lの違いはそれぞれバイト、ワード、ロングワードサイズです。
内容表示はそのデータから項目名をメニュー内容から取り出して表示します。
編集時は項目名一覧で選択することになります。
メニュー番号は1~定義した個数までです。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
・CHECKSUM.P
CHECKSUM.P <コマンド文字列>
編集後に実行させるチェックサム補正プログラムを設定します。
たいていのセーブデータには、メモリーカード故障など万一の為に
データ化けを検査するチェックサムを取っているのが普通です。
そのチェックサム補正が出来れば編集してもデータ化けと認識させない事が出来ます。
その補正をするプログラムを指定して下さい。
チェックサムの計算方法は何等かの方法で調べるしかありません。
計算方法を直接定義することは出来ません。別個にプログラムを作って下さい。
コマンド文字列内に %f をオプションで入れると編集したファイル名に置換します。
書き込み禁止の場合はもちろん実行されません。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
・END
END
終了コマンドです。
編集情報の解釈を終了します。
ENDコマンドを入れた後にドキュメントを付けたり、
何かの理由で解釈を中断させたい時などに使えます。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━